<?php
/**
 * 获取var_dump()函数格式化结果
 *
 * @param           $var
 * @param bool|true $echo
 * @param null      $label
 * @param bool|true $strict
 *
 * @return mixed
 */
function dump($var,$echo = true,$label = null,$strict = true)
{
	$label = ($label === null) ? '' : rtrim($label).' ';
	if(!$strict) {
		if(ini_get('html_errors')) {
			$output = print_r($var,true);
			$output = '<pre>'.$label.htmlspecialchars($output,ENT_QUOTES).'</pre>';
		} else {
			$output = $label.print_r($var,true);
		}
	} else {
		ob_start();
		var_dump($var);
		$output = ob_get_clean();
		if(!extension_loaded('xdebug')) {
			$output = preg_replace('/\]\=\>\n(\s+)/m','] => ',$output);
			$output = '<pre>'.$label.htmlspecialchars($output,ENT_QUOTES).'</pre>';
		}
	}
	if($echo) {
		echo($output);

		return null;
	} else
		return $output;
}

/**
 * 获取客户端IP地址
 *
 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
 * @param boolean $adv 是否进行高级模式获取（有可能被伪装）
 *
 * @return mixed
 */
function get_client_ip($type = 0,$adv = false)
{
	$type = $type ? 1 : 0;
	static $ip = null;
	if($ip !== null) return $ip[$type];
	if($adv) {
		if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
			$arr = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
			$pos = array_search('unknown',$arr);
			if(false !== $pos) unset($arr[$pos]);
			$ip = trim($arr[0]);
		} elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
			$ip = $_SERVER['HTTP_CLIENT_IP'];
		} elseif(isset($_SERVER['REMOTE_ADDR'])) {
			$ip = $_SERVER['REMOTE_ADDR'];
		}
	} elseif(isset($_SERVER['REMOTE_ADDR'])) {
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	// IP地址合法验证
	$long = sprintf("%u",ip2long($ip));
	$ip = $long ? array($ip,$long) : array('0.0.0.0',0);

	return $ip[$type];
}

